use dziennik;
go


create view uczen_oceny
as
select
	o.ocena, o. waga, o.zaCo, o.data, p.nazwa, n.tytulNaukowy, n.imie, n.nazwisko
from
	dziennik.dbo.oceny o
	inner join dziennik.dbo.przedmioty p on o.idPrzedmiotu = p.id
	inner join dziennik.dbo.nauczyciele n on p.userIdNauczyciela = n.userId
	inner join dziennik.dbo.uczniowie u on u.userId = o.userIdUcznia
where 
	u.userId = dziennik.dbo.getUserNameInt() and p.semestr = dziennik.dbo.uczen_getSem();
go

create view uczen_zachowanie
as
select
	z.ocena, z.proponowana, z.data, p.nazwa, n.tytulNaukowy, n.imie, n.nazwisko
from
	dziennik.dbo.zachowanie z
	inner join dziennik.dbo.przedmioty p on z.idPrzedmiotu = p.id
	inner join dziennik.dbo.nauczyciele n on p.userIdNauczyciela = n.userId
	inner join dziennik.dbo.uczniowie u on u.userId = z.userIdUcznia
where
	u.userId = dziennik.dbo.getUserNameInt() and p.semestr = dziennik.dbo.uczen_getSem();
go

create view uczen_ocenykoncowe
as
select
	o.ocena, o.data, o.proponowana, p.nazwa, n.tytulNaukowy, n.imie, n.nazwisko
from
	dziennik.dbo.ocenyKoncowe o
	inner join dziennik.dbo.przedmioty p on o.idPrzedmiotu = p.id
	inner join dziennik.dbo.nauczyciele n on p.userIdNauczyciela = n.userId
	inner join dziennik.dbo.uczniowie u on o.userIdUcznia = u.userId
where
	u.userId = dziennik.dbo.getUserNameInt() and p.semestr = dziennik.dbo.uczen_getSem();
go



create view uczen_zachowaniekoncowe
as
select
	z.ocena, z.proponowana, z.data, n.tytulNaukowy, n.imie, n.nazwisko
from
	dziennik.dbo.zachowaniekoncowe z
	inner join dziennik.dbo.uczniowie u on z.userIdUcznia = u.userId
	inner join dziennik.dbo.klasy k on u.idKlasy = k.id
	inner join dziennik.dbo.nauczyciele n on k.userIdWychowawcy = n.userId
where
	u.userId = dziennik.dbo.getUserNameInt() and z.semestr = dziennik.dbo.uczen_getSem();
go



create view uczen_wiadomosci
as
select
	w.id, w.userIdNadawcy, w.przeczytana, n.tytulNaukowy, n.imie, n.nazwisko, w.temat, w.tresc, w.czas
from
	dziennik.dbo.wiadomosci w
	inner join dziennik.dbo.nauczyciele n on n.userId = w.userIdNadawcy
where
	w.userIdOdbiorcy = dziennik.dbo.getUserNameInt();
go




create view nauczyciel_wiadomosci_nauczycieli
as
select
	w.id, w.userIdNadawcy, w.przeczytana, n.tytulNaukowy, n.imie, n.nazwisko, w.temat, w.tresc, w.czas
from
	dziennik.dbo.wiadomosci w
	inner join dziennik.dbo.nauczyciele n on n.userId = w.userIdNadawcy
where
	w.userIdOdbiorcy = dziennik.dbo.getUserNameInt();
go


create view nauczyciel_wiadomosci_uczniow
as
select
	w.id, w.userIdNadawcy, w.przeczytana, u.imie, u.nazwisko, concat(floor(((k.semestr + 1) / 2)), k.nazwa) as klasa, w.temat, w.tresc, w.czas
from
	dziennik.dbo.wiadomosci w inner join
	dziennik.dbo.uczniowie u on u.userId = w.userIdNadawcy inner join
	dziennik.dbo.klasy k on u.idKlasy = k.id
where
	w.userIdOdbiorcy = dziennik.dbo.getUserNameInt();
go


create view nauczyciel_wiadomosci_opiekunow
as
select
	w.id, w.userIdNadawcy, w.przeczytana, o.imie, o.nazwisko, w.temat, w.tresc, w.czas
from
	dziennik.dbo.wiadomosci w inner join 
	dziennik.dbo.opiekunowie o on w.userIdNadawcy = o.userId
where
	w.userIdOdbiorcy = dziennik.dbo.getUserNameInt();
go

create view opiekun_wiadomosci
as
select
	w.id, w.userIdNadawcy, w.przeczytana, n.tytulNaukowy, n.imie, n.nazwisko, w.temat, w.tresc, w.czas
from
	dziennik.dbo.wiadomosci w inner join 
	dziennik.dbo.nauczyciele n on n.userId = w.userIdNadawcy
where
	w.userIdOdbiorcy = dziennik.dbo.getUserNameInt();
go

create view uczen_przedmioty
as
select
	p.nazwa, n.tytulNaukowy, n.imie, n.nazwisko
from
	dziennik.dbo.przedmioty p
	inner join dziennik.dbo.nauczyciele n on p.userIdNauczyciela = n.userId
	inner join dziennik.dbo.klasy k on p.idKlasy = k.id
	inner join dziennik.dbo.uczniowie u on u.idKlasy = k.id
where
	u.userId = dziennik.dbo.getUserNameInt() and 
	k.semestr = dziennik.dbo.uczen_getSem();
go




create view uczen_uwagi
as
select
	u.data, n.tytulNaukowy, n.imie, n.nazwisko, u.tresc
from
	dziennik.dbo.uwagi u inner join 
	dziennik.dbo.nauczyciele n on u.userIdNauczyciela = n.userId inner join 
	dziennik.dbo.uczniowie uc on uc.userId = u.userIdUcznia inner join 
	dziennik.dbo.klasy k on uc.idKlasy = k.id
where
	uc.userId = dziennik.dbo.getUserNameInt() and k.semestr = dziennik.dbo.uczen_getSem();
go




create view uczen_listanauczycieli
as
select
	n.userId, n.imie, n.nazwisko, n.tytulNaukowy,
	
		(select
			convert(bit, count(*))
		from
			dziennik.dbo.nauczyciele n1 inner join
			dziennik.dbo.przedmioty p1 on p1.userIdNauczyciela = n1.userId inner join
			dziennik.dbo.klasy k1 on k1.id = p1.idKlasy inner join
			dziennik.dbo.uczniowie u1 on u1.idKlasy = k1.id
		where
			u1.userId = dziennik.dbo.getUserNameInt() and
			p1.semestr = dziennik.dbo.uczen_getSem() and
			n1.userId = n.userId) as twojNauczyciel
	
from
	dziennik.dbo.nauczyciele n;
go



create view uczen_planlekcji
as
select
	pl.dzienTygodnia, pl.idJednostki, pr.nazwa
from
	dziennik.dbo.planlekcji pl inner join 
	dziennik.dbo.przedmioty pr on pl.idPrzedmiotu = pr.id
where exists(
	select 
		* 
	from 
		dziennik.dbo.klasy k inner join 
		dziennik.dbo.uczniowie u on u.idKlasy = k.id
	where
		u.userId = dziennik.dbo.getUserNameInt() and
		pr.idKlasy = k.id
);
go




create view uczen_danewychowawcy
as
select
	n.imie, n.nazwisko, n.tytulNaukowy, n.userId, p.nazwa
from
	dziennik.dbo.nauczyciele n inner join
	dziennik.dbo.przedmioty p on p.userIdNauczyciela = n.userId inner join
	dziennik.dbo.klasy k on k.id = p.idKlasy inner join
	dziennik.dbo.uczniowie u on u.idKlasy = k.id
where
	u.userId = dziennik.dbo.getUserNameInt() and n.userId = k.userIdWychowawcy;
go






create view uczen_daneosobowe
as
select 
	u.imie, u.nazwisko, concat(floor(((k.semestr + 1) / 2)), k.nazwa) as klasa
from
	dziennik.dbo.uczniowie u inner join
	dziennik.dbo.klasy k on k.id = u.idKlasy
where
	u.userId = dziennik.dbo.getUserNameInt();
go


create view nauczyciel_danewychowankow
as
select
	u.userId, u.pesel, u.imie, u.drugieImie, u.nazwisko, u.imieOjca, u.imieMatki, u.dataUrodzenia, u.miejsceUrodzenia, concat(floor(((k.semestr + 1) / 2)), k.nazwa) as klasa
from
	dziennik.dbo.uczniowie u inner join
	dziennik.dbo.klasy k on u.idKlasy = k.id
where
	k.userIdWychowawcy = dziennik.dbo.getUserNameInt();
go